<?php

require_once '../db/Conexion.php';
require_once '../db/Configuraciones.php';

$tipoListado = "INSCRIPTOS";
$torneoIdList = "0";

//gestiona la accion solicitada 
function accion_controller() {
    $accion = FALSE;
    $pokerSpecific_peticion = helper_data();
    $accion = $pokerSpecific_peticion['accion'];
    if ($accion) {
        switch ($accion) {

            case 'save' :
                guardar($pokerSpecific_peticion);
                break;
            case 'delete' :
                eliminar($pokerSpecific_peticion['id']);
                break;
            case 'list' :
                listar();
                break;
            case 'pokerSpecificByPersona' :
                pokerSpecificByPersona($pokerSpecific_peticion['id']);
                break;

            case 'pokerMoviminetoByPersona' :
                pokerMovimientoByPersona($pokerSpecific_peticion['id']);
                break;
            case 'inscribir' :
                inscribir($pokerSpecific_peticion['persona_id']);
                break;
            case 'edit' :
                editar($pokerSpecific_peticion['id']);
                break;
        }
    } else {
        die("ERROR: No se recibieron los parametros correspondientes.");
    }
}

//OBTIENE LOS DATOS DE POST
function helper_data() {
    global $tipoListado, $torneoIdList;
    $pokerSpecific = array();

    if (isset($_POST['id']))
        $pokerSpecific['id'] = $_POST['id'];

    if (isset($_POST['persona_id']))
        $pokerSpecific['persona_id'] = $_POST['persona_id'];

    if (isset($_POST['poker_torneo_id']))
        $pokerSpecific['poker_torneo_id'] = $_POST['poker_torneo_id'];

    if (isset($_POST['mesa_numero']))
        $pokerSpecific['mesa_numero'] = $_POST['mesa_numero'];
    if (isset($_POST['mesa_posicion']))
        $pokerSpecific['mesa_posicion'] = $_POST['mesa_posicion'];


    if (isset($_POST['accion']))
        $pokerSpecific['accion'] = $_POST['accion'];

    if (isset($_POST['tipoListado']))
        $tipoListado = $_POST['tipoListado'];
    if (isset($_POST['torneoIdList']))
        $torneoIdList = $_POST['torneoIdList'];
    return $pokerSpecific;
}

//GUARDAR
function guardar($pokerSpecific_peticion) {
    global $tipoListado, $torneoIdList;
    if (!$pokerSpecific_peticion['id']) {
        $pokerSpecificQuery = "INSERT INTO poker_specifics ( persona_id, poker_torneo_id, mesa_numero, mesa_posicion) VALUES
                                            ( " . $pokerSpecific_peticion['persona_id'] . " , 
                                              " . $pokerSpecific_peticion['poker_torneo_id'] . ", 
                                              " . $pokerSpecific_peticion['mesa_numero'] . ", 
                                              " . $pokerSpecific_peticion['mesa_posicion'] . ");";
    } else {
        $pokerSpecificQuery = "UPDATE poker_specifics SET 
                                    persona_id=" . $pokerSpecific_peticion['persona_id'] . ", 
                                    poker_torneo_id=" . $torneoIdList . ", 
                                    mesa_numero=" . $pokerSpecific_peticion['mesa_numero'] . ", 
                                    mesa_posicion=" . $pokerSpecific_peticion['mesa_posicion'] . "
                                 WHERE id = " . $pokerSpecific_peticion['id'] . "  LIMIT 1;";
    }
    if (ejecutar($pokerSpecificQuery)) {

        listar();
    } else {
        die("Error: No se pudo Guardar el Registro!");
    }
}

//ELIMINAR
function eliminar($id) {

   
    $specific = consultar( "Select persona_id, poker_torneo_id from poker_specifics where id=$id ");
    
    $query = "
        INSERT INTO poker_movimientos (persona_id, poker_torneo_id,tipo,descripcion) 
        VALUES (".$specific[0]['persona_id'].", ".$specific[0]['poker_torneo_id'].",'BORRADO','PRE INSCRIPCION BORRADA');
        DELETE FROM poker_specifics WHERE id='$id' LIMIT 1;";
    if (multiQuery($query)) {
        listar();
    } else {
        die("Error: No se pudo Eliminar el Registro");
    }
}
//insertar nueva inscripcion
function inscribir($personaId) {
    
    global $tipoListado, $torneoIdList;
    
    $query = "INSERT INTO poker_specifics (persona_id, poker_torneo_id) VALUES ($personaId, $torneoIdList);
              INSERT INTO poker_movimientos (persona_id, poker_torneo_id,tipo,descripcion) 
              VALUES ($personaId, $torneoIdList,'PRE INSCRIPCION','PRE INSCRIPCION AL TORNEO'); ";
    if (multiQuery($query)) {
        listar();
    } else {
        die("Error: No se puedo ejectar la consulta");
    }
}

//ELIMINAR
function pokerMovimientoByPersona($personaId) {
    global $tipoListado, $torneoIdList;
    $persona = consultar("Select p.apenom  FROM personas as p WHERE p.id=$personaId");
    $torneo = consultar("Select t.nombre FROM poker_torneos as t WHERE t.id=$torneoIdList");
    $consulta = "SELECT m.id, m.tipo, m.ingreso, m.egreso, m.fecha_hora, m.descripcion FROM poker_movimientos as m
                 WHERE m.persona_id=$personaId AND m.poker_torneo_id=$torneoIdList
                 ORDER BY m.fecha_hora DESC";
    $pokerMovimiento = consultar($consulta);

    require_once '../view/pokerSpecific/MovimientoPokerByPersona.php';
}

//LISTADO
function listar() {
    global $tipoListado, $torneoIdList;
    $pokerTorneos = consultar("SELECT t.id,t.nombre FROM poker_torneos as t ORDER BY t.finalizado ASC,  t.id ASC");
    if ($torneoIdList == "0") {
        $torneoIdList = $pokerTorneos[0]['id'];
    }

    $filtros = "";
    if ($tipoListado === "PREINSCRIPTOS") {
        $filtros = " AND ps.estado = 'PRE INSCRIPTO' ";
    } else if ($tipoListado === "INSCRIPTOS") {
        $filtros = " AND ps.id != 0 AND ps.estado != 'PRE INSCRIPTO' ";
    }


    $consulta = "
        SELECT IFNULL(ps.id,0) AS id, p.id AS persona_id, p.documento AS documento, ps.estado as estado, ps.mesa_numero, ps.mesa_posicion, 
                                                p.apenom AS apenom, p.telefono AS telefono, IFNULL(c.nombre,'SIN DEFINIR') AS ciudad 
        FROM personas AS p 
        LEFT JOIN poker_specifics AS ps ON p.id = ps.persona_id AND ps.poker_torneo_id = $torneoIdList  
        LEFT JOIN ciudades AS c ON c.id = p.ciudad_id 
        WHERE p.inactivo IS FALSE $filtros 
        ORDER BY apenom, id ASC         

";

//    if ($tipoListado === "INSCRIPTOS") {
//        $consulta .= " and pks.inscripto =1 ";
//    } else if ($tipoListado === "PREINSCRIPTOS") {
//        $consulta .= " and pks.inscripto =0 ";
//    }




    $pokerSpecifics = consultar($consulta);


    require_once '../view/pokerSpecific/ListPokerSpecifics.php';
}

function editar($id) {
    global $tipoListado, $torneoIdList;
    $query = "Select * from personas where id = $id";
    $persona = consultar($query);

    $queryPokerTorneo = "Select * from poker_torneos as t where t.id=$torneoIdList";
    $pokerTorneos = consultar($queryPokerTorneo);

    $queryPokerSpecifics = "Select * from poker_specifics where poker_torneo_id=$torneoIdList and persona_id = $id";
    $pokerSpecifics = consultar($queryPokerSpecifics);

    require_once '../view/pokerSpecific/FormPokerSpecific.php';
}

accion_controller();
?>
